package vista;

import modelo.Coordenada;
import modelo.Direccion;
import titiritero.Posicionable;
import titiritero.SuperficieDeDibujo;
import titiritero.vista.ImagenAnimada;

public class VistaMunicion extends ImagenAnimada {

	private Coordenada posicionAnterior; // para cambiar el frame automaticamente
	
	public VistaMunicion(String archImagen, int w, int h, Direccion direccion) {
		super(archImagen, w, h);
		this.asignarFrameCorrecto(direccion);
	}
	
	private void asignarFrameCorrecto(Direccion direccion) {
		switch(direccion) {
			case ARRIBA:
				this.setFrame(0);
				break;
			case ABAJO:
				this.setFrame(1);
				break;
			case DERECHA:
				this.setFrame(2);
				break;
			case IZQUIERDA:
				this.setFrame(3);
				break;
		}
	}

	public void dibujar(SuperficieDeDibujo superficeDeDibujo) {
		this.actualizarFrame();
		super.dibujar(superficeDeDibujo);
	}
	
	public void setPosicionable(Posicionable posicionable) {
		posicionAnterior = new Coordenada(posicionable.getX(), posicionable.getY());
		super.setPosicionable(posicionable);
	}
	
	public boolean seMovio() {
		return !((posicionAnterior.getX() == getPosicionable().getX())&&(posicionAnterior.getY() == getPosicionable().getY()));
	}
	
	private void actualizarFrame() {

		if (posicionAnterior.getY()>getPosicionable().getY()){ //arriba
			setFrame(0);
		}
		else if (posicionAnterior.getY()<getPosicionable().getY()){ //abajo
			setFrame(1);
		}
		else if (posicionAnterior.getX()<getPosicionable().getX()){ //derecha
			setFrame(2);
		}
		else if (posicionAnterior.getX()>getPosicionable().getX()){ //izquierda
			setFrame(3);
		}
		
		posicionAnterior.setCoordenadas(getPosicionable().getX(), getPosicionable().getY());
	}
	
}
